home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / imghdr.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  5KB  |  177 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''Recognize image file formats based on their first few bytes.'''
  5. __all__ = [
  6.     'what']
  7.  
  8. def what(file, h = None):
  9.     if h is None:
  10.         if type(file) == type(''):
  11.             f = open(file, 'rb')
  12.             h = f.read(32)
  13.         else:
  14.             location = file.tell()
  15.             h = file.read(32)
  16.             file.seek(location)
  17.             f = None
  18.     else:
  19.         f = None
  20.     
  21.     try:
  22.         for tf in tests:
  23.             res = tf(h, f)
  24.             if res:
  25.                 return res
  26.                 continue
  27.     finally:
  28.         if f:
  29.             f.close()
  30.         
  31.  
  32.  
  33. tests = []
  34.  
  35. def test_rgb(h, f):
  36.     '''SGI image library'''
  37.     if h[:2] == '\x01\xda':
  38.         return 'rgb'
  39.     
  40.  
  41. tests.append(test_rgb)
  42.  
  43. def test_gif(h, f):
  44.     """GIF ('87 and '89 variants)"""
  45.     if h[:6] in ('GIF87a', 'GIF89a'):
  46.         return 'gif'
  47.     
  48.  
  49. tests.append(test_gif)
  50.  
  51. def test_pbm(h, f):
  52.     '''PBM (portable bitmap)'''
  53.     if len(h) >= 3 and h[0] == 'P' and h[1] in '14' and h[2] in ' \t\n\r':
  54.         return 'pbm'
  55.     
  56.  
  57. tests.append(test_pbm)
  58.  
  59. def test_pgm(h, f):
  60.     '''PGM (portable graymap)'''
  61.     if len(h) >= 3 and h[0] == 'P' and h[1] in '25' and h[2] in ' \t\n\r':
  62.         return 'pgm'
  63.     
  64.  
  65. tests.append(test_pgm)
  66.  
  67. def test_ppm(h, f):
  68.     '''PPM (portable pixmap)'''
  69.     if len(h) >= 3 and h[0] == 'P' and h[1] in '36' and h[2] in ' \t\n\r':
  70.         return 'ppm'
  71.     
  72.  
  73. tests.append(test_ppm)
  74.  
  75. def test_tiff(h, f):
  76.     '''TIFF (can be in Motorola or Intel byte order)'''
  77.     if h[:2] in ('MM', 'II'):
  78.         return 'tiff'
  79.     
  80.  
  81. tests.append(test_tiff)
  82.  
  83. def test_rast(h, f):
  84.     '''Sun raster file'''
  85.     if h[:4] == 'Y\xa6j\x95':
  86.         return 'rast'
  87.     
  88.  
  89. tests.append(test_rast)
  90.  
  91. def test_xbm(h, f):
  92.     '''X bitmap (X10 or X11)'''
  93.     s = '#define '
  94.     if h[:len(s)] == s:
  95.         return 'xbm'
  96.     
  97.  
  98. tests.append(test_xbm)
  99.  
  100. def test_jpeg(h, f):
  101.     '''JPEG data in JFIF format'''
  102.     if h[6:10] == 'JFIF':
  103.         return 'jpeg'
  104.     
  105.  
  106. tests.append(test_jpeg)
  107.  
  108. def test_exif(h, f):
  109.     '''JPEG data in Exif format'''
  110.     if h[6:10] == 'Exif':
  111.         return 'jpeg'
  112.     
  113.  
  114. tests.append(test_exif)
  115.  
  116. def test_bmp(h, f):
  117.     if h[:2] == 'BM':
  118.         return 'bmp'
  119.     
  120.  
  121. tests.append(test_bmp)
  122.  
  123. def test_png(h, f):
  124.     if h[:8] == '\x89PNG\r\n\x1a\n':
  125.         return 'png'
  126.     
  127.  
  128. tests.append(test_png)
  129.  
  130. def test():
  131.     import sys as sys
  132.     recursive = 0
  133.     if sys.argv[1:] and sys.argv[1] == '-r':
  134.         del sys.argv[1:2]
  135.         recursive = 1
  136.     
  137.     
  138.     try:
  139.         if sys.argv[1:]:
  140.             testall(sys.argv[1:], recursive, 1)
  141.         else:
  142.             testall([
  143.                 '.'], recursive, 1)
  144.     except KeyboardInterrupt:
  145.         sys.stderr.write('\n[Interrupted]\n')
  146.         sys.exit(1)
  147.  
  148.  
  149.  
  150. def testall(list, recursive, toplevel):
  151.     import sys
  152.     import os as os
  153.     for filename in list:
  154.         if os.path.isdir(filename):
  155.             print filename + '/:',
  156.             if recursive or toplevel:
  157.                 print 'recursing down:'
  158.                 import glob as glob
  159.                 names = glob.glob(os.path.join(filename, '*'))
  160.                 testall(names, recursive, 0)
  161.             else:
  162.                 print '*** directory (use -r) ***'
  163.         toplevel
  164.         print filename + ':',
  165.         sys.stdout.flush()
  166.         
  167.         try:
  168.             print what(filename)
  169.         continue
  170.         except IOError:
  171.             print '*** not found ***'
  172.             continue
  173.         
  174.  
  175.     
  176.  
  177.